package com.chinawayltd.ews.sample.service.algorithm;

import java.util.List;

import com.chinawayltd.ews.sample.model.TTemplate;
import com.chinawayltd.ews.sample.model.TTemplateEvent;
import com.chinawayltd.ews.sample.model.TTemplateNode;
import com.chinawayltd.ews.sample.model.algorithm.TemplateVO;
import com.chinawayltd.ews.sample.web.query.TemplateGirdQuery;

/**
 * @program: greeProject
 * @description 任务流程设定
 * @author: chenxin
 * @create: 2018年4月12日 下午6:19:52
 */
public interface TemplateService {

	/**
	 * 新增流程模板
	 * @author: chenxin
	 * @date: 2018年4月10日
	 * @param tTemplateNode
	 * @return
	 */
	int add(TTemplate tEmplate);
	 
	/**
	 * 修改
	 * @author: chenxin
	 * @date: 2018年4月10日
	 * @param tBranchUnVehcle
	 * @return
	 */
	int update(TTemplate tEmplate);

    /**
     * 删除
     * @author: chenxin
     * @date: 2018年4月10日
     * @param id
     * @return
     */
    int delete(long id);

    /**
     * 流程模板列表
     * @author: chenxin
     * @date: 2018年4月13日
     * @param queryParam
     * @return
     */
	List<TemplateVO> list(TemplateGirdQuery queryParam);

	/**
	 * 根据流程模板id查询
	 * @author: chenxin
	 * @date: 2018年4月14日
	 * @param id
	 * @return
	 */
	TTemplate getTemplateById(Long id) throws Exception;
	/**
	 * 根据流程节点id查询
	 * @author: chenxin
	 * @date: 2018年4月14日
	 * @param id
	 * @return
	 */
	TTemplateNode getTemplateNodeById(Long id) throws Exception;
	
	/**
	 * 通过模板id查询对应的流程节点列表
	 * @author: chenxin
	 * @date: 2018年4月14日
	 * @param id
	 * @return
	 */
	List<TTemplateNode> getTemplateNodeByTemplateId(Long id);

	/**
	 * 
	 * @author: chenxin
	 * @date: 2018年4月14日
	 * @param id
	 * @return
	 */
	List<TTemplateEvent> getTemplateEventByTemplateId(Long id);

	/**
	 * 根据流程模板id新增异常事件
	 * @author: chenxin
	 * @date: 2018年4月14日
	 * @param tTemplateEvent
	 * @return
	 */
	int addEvent(TTemplateEvent tTemplateEvent);

	/**
	 * 根据异常id和流程模板id修改异常事件
	 * @author: chenxin
	 * @date: 2018年4月14日
	 * @param tTemplateEvent
	 * @return
	 */
	int updateEvent(TTemplateEvent tTemplateEvent);

	/**
	 * 通过id删除异常事件
	 * @author: chenxin
	 * @date: 2018年4月14日
	 * @param id
	 * @return
	 */
	int deleteEvent(Long id) throws Exception;

	/**
	 * 根据异常id修改异常事件状态
	 * @author: chenxin
	 * @date: 2018年4月14日
	 * @param id
	 * @param enableState
	 * @return
	 */
	int updateEventState(Long id, Long enableState);

}
